package com.ruoyi.custom.service.Impl.encryption;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.custom.domain.encryption.EncryptEnvconfig;
import com.ruoyi.custom.domain.encryption.vo.EncryptEnvconfigVo;
import com.ruoyi.custom.mapper.encryption.EncryptEnvconfigMapper;
import com.ruoyi.custom.service.encryption.IEncryptEnvconfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * <p>
 * 加解密环境配置 服务实现类
 * </p>
 *
 * @author xudm
 * @since 2024-06-30
 */
@Service
public class EncryptEnvconfigServiceImpl extends ServiceImpl<EncryptEnvconfigMapper, EncryptEnvconfig> implements IEncryptEnvconfigService {

    @Override
    public boolean checkConfigNameUnique(EncryptEnvconfigVo envconfigVo) {
        LambdaQueryWrapper<EncryptEnvconfig> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EncryptEnvconfig::getConfigName, envconfigVo.getConfigName());
        EncryptEnvconfig encryptEnvconfig = getOne(queryWrapper);
        return encryptEnvconfig == null;
    }

    @Override
    public List<EncryptEnvconfig> getConfigList(Long userId) {
        LambdaQueryWrapper<EncryptEnvconfig> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EncryptEnvconfig::getCreatedBy, userId);
        return list(queryWrapper);
    }

    @Override
    public boolean delEnvConfig(Long userId, String configId) {
        LambdaQueryWrapper<EncryptEnvconfig> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EncryptEnvconfig::getCreatedBy, userId);
        queryWrapper.eq(EncryptEnvconfig::getConfigId, configId);
        return remove(queryWrapper);
    }

    @Override
    public EncryptEnvconfig getEnvConfigById(Long userId, String configId) {
        LambdaQueryWrapper<EncryptEnvconfig> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EncryptEnvconfig::getCreatedBy, userId);
        queryWrapper.eq(EncryptEnvconfig::getConfigId, configId);
        return getOne(queryWrapper);
    }

    @Override
    public boolean updateEnvConfig(Long userId, EncryptEnvconfigVo envconfigVo) {
        LambdaQueryWrapper<EncryptEnvconfig> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EncryptEnvconfig::getCreatedBy, userId);
        queryWrapper.eq(EncryptEnvconfig::getConfigId, envconfigVo.getConfigId());
        EncryptEnvconfig encryptEnvconfig = getOne(queryWrapper);
        if (encryptEnvconfig != null) {
            encryptEnvconfig.setConfigName(envconfigVo.getConfigName());
            encryptEnvconfig.setEncryptType(envconfigVo.getEncryptType());
            encryptEnvconfig.setRequestPublicKey(envconfigVo.getRequestPublicKey());
            encryptEnvconfig.setRequestPrivateKey(envconfigVo.getRequestPrivateKey());
            encryptEnvconfig.setResponsePublicKey(envconfigVo.getResponsePublicKey());
            encryptEnvconfig.setResponsePrivateKey(envconfigVo.getResponsePrivateKey());
            return updateById(encryptEnvconfig);
        }
        return false;
    }

    @Override
    public boolean delEnvConfigByIds(Long userId, String[] configId) {
        return removeByIds(Arrays.asList(configId));
    }

    @Override
    public List<EncryptEnvconfig> getAllConfigList() {
        return list();
    }
}
